package com.fwzhang.third.collectionframework.collection.set;

import java.util.Collection;
import java.util.Spliterator;
import java.util.Spliterators;

public interface SetInterface<E> extends Collection<E> {

    /**
     * Set接口中定义的方法与List基本一致
     */
    /**
     * Set接口中定义的方法：
     *  1、size()
     *  2、isEmpty()
     *  3、contains(Object o)
     *  4、iterator()
     *  5、toArray()
     *  6、toArray(T[] a)
     *  7、add(E e)
     *  8、remove(Object o)
     *  9、containsAll(Collection<?> c)
     *  10、addAll(Collection<? extends E> c)
     *  11、retainAll(Collection<?> c)
     *  12、removeAll(Collection<?> c)
     *  13、clear()
     *  14、equals(Object o)
     *  15、hashCode()
     */

    /**
     * Set使用Spliterator.DISTINCT
     * @return
     */
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, Spliterator.DISTINCT);
    }
}
